API Gateway を呼び出す Step Functions でステートマシン保存失敗を回避するには

API Gateway を呼び出す Step Functions でステートマシン保存失敗を回避するには

Clock Icon2023.10.24

困っていた内容

API Gateway を呼び出す Step Functions の構築で、ステートマシンの保存が失敗しました。
HTTP ヘッダーの値が原因のようですが、Lambda オーソライザーのサンプル値(secretToken)でも失敗します。 ステートマシンの保存に成功するにはどうしたら良いでしょうか?

ステートマシンの定義に Amazon ステート言語エラーがあります。エラーを修正して続行してください。
The 'Headers' field contains unsupported values: [authorization] /States/API Gateway Invoke/Parameters 
For more information, see Amazon States Language 

どう対応すればいいの?

HTTP ヘッダー名(例:Authorization)を確認してください。

Step Functions の API Gateway 呼び出しでは追加の HTTP ヘッダーが設定可能です。ただし、2023年10月時点で、次の HTTP ヘッダー名はセキュリティの理由から設定できません。

Step Functions を使用して API Gateway を呼び出し - AWS Step Functions

  • X-Forwarded、X-Amz、またはX-Amznのプレフィックスが付いているキー。
  • Authorization
  • Connection
  • Content-md5
  • Expect
  • Host
  • Max-Forwards
  • Proxy-Authenticate
  • Server
  • TE
  • Transfer-Encoding
  • Trailer
  • Upgrade
  • Via
  • Www-Authenticate

そのため、使用できない HTTP ヘッダー名を定義していないか確認し、必要に応じて HTTP ヘッダー名を変更してください。

なお、HTTP API の Lambda オーソライザーではドキュメントのサンプルコードで構築した場合、ヘッダー名にAuthorizationを使用しますが、ヘッダー名は変更できます。

変更する際は、API Gateway の ID ソースと

Lambda のコード変更(13行目)の二つが必要ですので、ご注意ください。

export const handler = async(event) => {
    let response = {
        "isAuthorized": false,
        "context": {
            "stringKey": "value",
            "numberKey": 1,
            "booleanKey": true,
            "arrayKey": ["value1", "value2"],
            "mapKey": {"value1": "value2"}
        }
    };
    
    if (event.headers.hatoauth === "secretToken") {
        response = {
            "isAuthorized": true,
            "context": {
                "stringKey": "value",
                "numberKey": 1,
                "booleanKey": true,
                "arrayKey": ["value1", "value2"],
                "mapKey": {"value1": "value2"}
            }
        };
    }

    return response;

};

参考資料

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.